﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;

namespace usingDemo
{
    class Program
    {
        static void MainusingDemo(string[] args)
        {
            try
            {
                // 使用using
                using (MyDispose md = new MyDispose())
                {
                    md.DoWork();
                    // 抛出一个异常来测试using
                    throw new Exception("抛出一个异常");
                }//结束时自动执行dispose，释放资源
                //显然，这段程序块，当构造“sqlComm”对象发生异常，会造成 “sqlConn”对象无法及时被释放。
            }
            catch
            {

            }//虽然抛出异常，但是在这里捕获了异常，所有还是会执行dispose
            finally
            {
                //Console.ReadKey();
            }

            using (MyDispose md = new MyDispose())//自带try，finally，相当于在finally执行了dispose
            {
                //throw new Exception("抛出一个异常");
                md.DoWork();
                // 抛出一个异常来测试using
               
            }



        }
    }

    /// <summary>
    /// 继承自IDisposable接口，仅仅用来做测试，不使用任何非托管资源
    /// </summary>
    public class MyDispose : IDisposable
    {
        public void Dispose()
        {
            Console.WriteLine("Dispose方法被调用");
        }
        public void DoWork()
        {
            Console.WriteLine("做了很多工作");
          //  throw new Exception("抛出一个异常");
        }
    }
}